package com.eastseeway.radioproject.utils;

import android.content.Context;

import com.eastseeway.radioproject.base.Const;
import com.eastseeway.radioproject.entities.BeanDeviceInfo;
import com.eastseeway.radioproject.entities.OperationParams;
import com.eastseeway.radioproject.entities.UserInfo;
import com.eastseeway.radioproject.entities.VersionBean;

import java.util.List;

public class SPHelper {

    /**
     * 保存/获取本机唯一id
     * @param context 上下文
     * @param id id
     */
    public static void setDeviceId(Context context, String id){
        SpUtils.putString(context, Const.SPKEY_DEVICE_ID,id);
    }

    public static String getDeviceId(Context context){
        return SpUtils.getString(context,Const.SPKEY_DEVICE_ID);
    }

    /**
     * 保存/获取当前登录用户信息
     * @param context
     * @param userInfo
     */
    public static void saveCurrentUserInfo(Context context, UserInfo userInfo){
        SpUtils.putObject(context,Const.SPKEY_CURRENT_USER,userInfo);
    }

    public static UserInfo getCurrentUserInfo(Context context){
        return SpUtils.getObject(context,Const.SPKEY_CURRENT_USER);
    }

    /**
     * 保存/获取位置信息
     */
    public static void saveAddress(Context context, String address){
        SpUtils.putString(context,Const.SPKEY_ADDRESS,address);
    }
    public static String getAddress(Context context){
        return SpUtils.getString(context,Const.SPKEY_ADDRESS);
    }

    /**
     * 保存
     */
    public static void saveDesFirmwareInfo(Context context,String fileName){
        SpUtils.putString(context,Const.SPKEY_FIRMWARE_VERSION_INFO,fileName);
    }
    public static String getDesFirmwareInfo(Context context){
        return SpUtils.getString(context,Const.SPKEY_FIRMWARE_VERSION_INFO);
    }

    /**
     * 保存机器类型
     * @param context
     * @param machineType see {@link Const#MACHINE_TYPE_TAISHI} {@link Const#MACHINE_TYPE_LISHI}
     */
    public static void saveMachineType(Context context, String machineType){
        SpUtils.putString(context,Const.SPKEY_MACHINE_TYPE,machineType);
    }
    public static String getMachineType(Context context){
        return SpUtils.getString(context,Const.SPKEY_MACHINE_TYPE);
    }

    /**
     * 保存累计时长
     */
    public static void saveOperationHours(Context context, long time){
        SpUtils.putLong(context,Const.SPKEY_WORK_HOURS,time);
    }
    public static long getOperationHours(Context context){
        return SpUtils.getLong(context,Const.SPKEY_WORK_HOURS,0);
    }

    /*
    保存设备信息
    */
    public static void saveDeviceInfo(Context context, BeanDeviceInfo deviceInfoBean){
        SpUtils.putObject(context,Const.SPKEY_DEVICE_INFO,deviceInfoBean);
    }
    public static BeanDeviceInfo getDeviceInfo(Context context){
        return SpUtils.getObject(context,Const.SPKEY_DEVICE_INFO);
    }

    /*
    保存TCP状态
    */
    public static void saveTcpConnectStatus(Context context, boolean isConnected){
        SpUtils.putBoolean(context,Const.SPKEY_TCP_CONNECT_STATUS,isConnected);
    }
    public static boolean getTcpConnectStatus(Context context){
        return SpUtils.getBoolean(context,Const.SPKEY_TCP_CONNECT_STATUS,false);
    }

//    保存手柄端请求的压力 默认-35
    public static void saveRequestPressure(Context context, int pressure){
        SpUtils.putInt(context,Const.SPKEY_REQUEST_PRESSURE,pressure);
    }
    public static int getRequestPressure(Context context){
        return SpUtils.getInt(context,Const.SPKEY_REQUEST_PRESSURE,-35);
    }
//    保存VBus电压
    public static void saveVBusVoltage(Context context, short voltage){
        SpUtils.putInt(context,Const.SPKEY_VBUS_VOLTAGE,voltage);
    }
    public static short getVBusVoltage(Context context){
        return (short) SpUtils.getInt(context,Const.SPKEY_VBUS_VOLTAGE,15);
    }

//    保存版本信息
    public static void saveVersionInfo(List<VersionBean> versionInfos){
        SpUtils.setDataList(Const.SPKEY_VERSION_INFO,versionInfos);
    }
    public static List<VersionBean> getVersionInfos(){
        return SpUtils.getDataList(Const.SPKEY_VERSION_INFO);
    }

//    保存手柄压力值的偏移量
    public static void savePressureOffset(Context context, int offset){
        SpUtils.putInt(context,Const.SPKEY_PRESSURE_OFFSET,offset);
    }
    public static int getPressureOffset(Context context){
        return SpUtils.getInt(context,Const.SPKEY_PRESSURE_OFFSET,0);
    }

}
